In linux, make halt the same as poweroff.
Xen now observes dom 0 exit code and halts if required.
void machine_halt(void)
{
- /* We really want to get pending console data out before we die. */
- extern void xencons_force_flush(void);
- xencons_force_flush();
- for ( ; ; ) /* loop without wasting cpu cycles */
- {
- HYPERVISOR_shared_info->vcpu_data[0].evtchn_upcall_pending = 0;
- HYPERVISOR_block();
- }
+ machine_power_off();
}
void machine_power_off(void)
void machine_halt(void)
{
- machine_restart(0);
-}
-
-void machine_power_off(void)
-{
- machine_restart(0);
+ while(1){ safe_halt(); }
}
void arch_do_createdomain(struct domain *d)
if ( current->domain == 0 )
{
extern void machine_restart(char *);
- printk("Domain 0 shutdown: rebooting machine!\n");
- machine_restart(0);
+ extern void machine_halt(void);
+
+ if ( reason == 0 )
+ {
+ printk("Domain 0 halted: Our work here is done.\n");
+ machine_halt();
+ }
+ else
+ {
+ printk("Domain 0 shutdown: rebooting machine!\n");
+ machine_restart(0);
+ }
}
current->shutdown_code = reason;